<!-- 
//ES6之前并没有构造函数给我们提供extends继承，我们可以通过构造函数+原型专业模拟实现继承
被称之为组合继承
call() 调用这个函数，并且修改函数运行的this指向
fun.call(thisArg,arg2,arg2,...)
thisArg:当前调用函数this的指向对象
age1,age2：传递的其它参数
 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //改变函数内的this指向 js提供了三种方法，call() apply()  bind()
        //1.call()
        var o = {
            name: 'andy'
        }
        function fn(a, b) {
            console.log(this);
            console.log(a + b);
        };
        // fn()
        fn.call(o, 1, 2); //既可以调用函数，又可以改变this指向

        function Father(uname, age, sex) {
            this.uname = uname;
            this.age = age;
            this.sex = sex;
        }
        function Son(uname, age, sex) {
            Father.call(this, uname, age, sex);        //把Father这个构造函数调过来，把把Father里面的this改成Son里面的this
            console.log(uname);
        }
        var son = new Son('刘德华', 28, '男');
        son.name = '朱浩然'
        console.log(son);
        console.log(new Father());


    </script>
</body>

</html>